package com.mdd.admin.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mdd.admin.service.IFileService;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.validate.file.FileSearchValidate;
import com.mdd.admin.vo.file.FileVo;
import com.mdd.admin.vo.user.UserVo;
import com.mdd.common.core.PageResult;
import com.mdd.common.entity.file.Files;
import com.mdd.common.entity.user.User;
import com.mdd.common.enums.ClientEnum;
import com.mdd.common.mapper.file.FilesMapper;
import com.mdd.common.mapper.user.UserMapper;
import com.mdd.common.util.StringUtils;
import com.mdd.common.util.TimeUtils;
import com.mdd.common.util.UrlUtils;
import org.springframework.beans.BeanUtils;

import javax.annotation.Resource;
import java.util.LinkedList;
import java.util.List;

public class FileServiceImpl implements IFileService {


    @Resource
    FilesMapper filesMapper;



    @Override
    public PageResult<FileVo> list(PageValidate pageValidate, FileSearchValidate fileSearchValidate) {

        Integer pageNo   = pageValidate.getPageNo();
        Integer pageSize = pageValidate.getPageSize();
        QueryWrapper<Files> queryWrapper = new QueryWrapper<>();
//        queryWrapper.eq("is_delete", 0);
        queryWrapper.orderByDesc("id");



        //排除不需要的列
        queryWrapper.select(Files.class, info->
                !info.getColumn().equals("is_delete") &&
                        !info.getColumn().equals("delete_time") &&
                        !info.getColumn().equals("update_time") &&
                        !info.getColumn().equals("password") &&
                        !info.getColumn().equals("salt")
        );

        if (fileSearchValidate.getPid()!=0){
            Integer pid = fileSearchValidate.getPid();
            queryWrapper.nested(wq->wq.like("pid", pid));
        }

//        if (StringUtils.isNotNull(fileSearchValidate.getPid()) && StringUtils.isNotEmpty(searchValidate.getKeyword())) {
//            InternalError keyword = fileSearchValidate.getPid();
//            queryWrapper.nested(wq->wq
//                    .like("sn", keyword).or()
//                    .like("nickname", keyword).or()
//                    .like("mobile", keyword));
//        }
//
        filesMapper.setSearch(queryWrapper, fileSearchValidate, new String[]{
                "=:channel:int",
                "datetime:startTime-endTime@create_time:str"
        });
//
        IPage<Files> iPage = filesMapper.selectPage( new Page<>(pageNo, pageSize), queryWrapper);
//
        List<FileVo> list = new LinkedList<>();
        for(Files file:iPage.getRecords()){
            FileVo vo = new FileVo();
            BeanUtils.copyProperties(file, vo);
            list.add(vo);
        }
//        for (User user : iPage.getRecords()) {
//            UserVo vo = new UserVo();
//            BeanUtils.copyProperties(user, vo);
//
//            vo.setSex(user.getSex());
//            vo.setChannel(ClientEnum.getMsgByCode(user.getChannel()));
//            vo.setAvatar(UrlUtils.toAbsoluteUrl(user.getAvatar()));
//            vo.setLastLoginTime(TimeUtils.timestampToDate(user.getLastLoginTime()));
//            vo.setCreateTime(TimeUtils.timestampToDate(user.getCreateTime()));
//            list.add(vo);
//        }
        return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list);

    }


}
